package br.net.atasacramental.discurso.business;
import br.net.atasacramental.discurso.dao.DiscursoDAO;
import br.net.atasacramental.discurso.model.Discurso;
import br.net.atasacramental.util.PaginacaoPeriodo;

import java.util.List;
import under.wsl.service.Service;
/**
 * @author root
 */
public class DiscursoBLL{
    private DiscursoDAO dao = null;
    public DiscursoBLL() {
        this.dao = new DiscursoDAO();
    }   
    @Service(cache=true)
    public List<Discurso> get(){
        return this.dao.get();
    }
    @Service()
    public Discurso getByIdDiscurso(int idDiscurso){
      return this.dao.getByIdDiscurso(idDiscurso);
    }
    @Service()
    public List<Discurso> getByIdReuniao(int idReuniao){
      return this.dao.getByIdReuniao(idReuniao);
    }
    @Service()
    public List<Discurso> getByPeriodo(PaginacaoPeriodo p){
       List<Discurso> convites = this.dao.getByPeriodo(p.getInicio(),p.getFim());
       return convites;
    }   
    @Service()
    public int getTotalByPeriodo(){
    	return this.dao.getRecentes().size();
    } 
    @Service(cache=false)
    public List<Discurso> getRecentes(){
       return this.dao.getRecentes();
    }
    @Service(remove={"DiscursoBLL.get"})
    public boolean update(Discurso disv){
      return this.dao.update(disv);
    }   
    @Service(remove={"DiscursoBLL.get"})
    public int insert(Discurso disv){
       this.dao.insert(disv);
       return disv.getIdDiscurso();
    }
    @Service(remove={"DiscursoBLL.get"})
    public boolean delete(Discurso disv){
      return this.dao.delete(disv);
    }
    @Service(remove={"DiscursoBLL.get"})
    public boolean transferir(Discurso disv){
      return this.dao.update(disv);
    }
    @Service(remove={"DiscursoBLL.get"})
    public boolean trocar(int idDiscurso1,int idDiscurso2){
      Discurso disc1 = this.dao.getByIdDiscurso(idDiscurso1);
      Discurso disc2 = this.dao.getByIdDiscurso(idDiscurso2);
      int idReuniao1 = disc1.getIdReuniao();
      int tempo1 = disc1.getTempo();      
      disc1.setIdReuniao(disc2.getIdReuniao());
      disc1.setTempo(disc2.getTempo());
      disc2.setIdReuniao(idReuniao1);
      disc2.setTempo(tempo1);
      if(!this.dao.update(disc1)){
    	  return false;
      };
      if(!this.dao.update(disc2)){
    	  return false;
      };
      return true;
    }
}
